package demo.MethodStaticReference;

import java.util.Arrays;

public class Test2 {
    public static void main( String[] args ) {
        // 特定类型方法的引用
        // 需求：一个字符串数组，有一些人名，中文名称和英文都有，按照名字首字母升序排列
        String[] names = { "张三", "angolan", "张三", "Tom", "Jerry", "bobi", "曹操", "Mike", "Jack", "Rose", "Anmi" };

        // 把这个数据进行排序  Arrays.sort(names,comparator)
        // Arrays.sort(names);   // 按照字符串的升序排序
        // 新要求：忽略首字母大小写进行排序（Java官方默认没有，需要我们自己指定比较规则）
//        Arrays.sort(names, new Comparator< String >() {
//                        @Override
//                        public int compare( String o1, String o2 ) {
//                            return o1.compareToIgnoreCase(o2);  //Java提供了字符串按首字母忽略大小写比较的方法。compareToIgnoreCase
//                        }
//                    }
//                   );
        // 使用Lambda表达式，符合特定类型方法的引用
        Arrays.sort(names, ( o1, o2 ) -> o1.compareToIgnoreCase(o2));
        // 特定类型方法引用 类型名称::方法名称
        Arrays.sort(names, String::compareToIgnoreCase);

        System.out.println(Arrays.toString(names));
    }
}
